package com.group.project.hrms.entity;

import java.util.Date;
import javax.persistence.*;

@Table(name = "attendance_monthly_report")
public class AttendanceMonthlyReport {

    public AttendanceMonthlyReport(float init) {
        this.shouldAttendanceHours = init;
        this.actualAttendanceHours = init;
        this.specialDayAttendanceHours = init;
        this.casualLeaveHours = init;
        this.medicalLeaveHours = init;
        this.annualLeaveHours = init;
        this.maternityLeaveHours = init;
        this.marriageLeaveHours = init;
        this.bereavementLeaveHours = init;
        this.exchangeLeaveHours = init;
        this.othersLeaveHours = init;
        this.dailyOvertimeHours = init;
        this.weekendOvertimeHours = init;
        this.holidayOvertimeHours = init;
        this.lateCount = (int)init;
        this.leaveEarlyCount = (int)init;
        this.additionClockCount = (int)init;
        this.neglectWorkCount = (int)init;
        this.totalCountHours = init;
    }

    public AttendanceMonthlyReport() {}


    /**
     * 表单ID
     */
    @Id
    @GeneratedValue(generator = "JDBC")
    private Long id;

    /**
     * 表单创建时间
     */
    @Column(name = "c_time")
    private Date cTime;

    /**
     * 表单修改时间
     */
    @Column(name = "m_time")
    private Date mTime;

    /**
     * 月度报表唯一标识符
     */
    @Column(name = "report_id")
    private String reportId;

    /**
     * 员工在通讯录中的ID
     */
    @Column(name = "contact_id")
    private String contactId;

    /**
     * 标准上班时间
     */
    @Column(name = "on_duty_time")
    private Date onDutyTime;

    /**
     * 有效上班时间
     */
    @Column(name = "on_duty_check_time")
    private Date onDutyCheckTime;

    /**
     * 有效迟到时间
     */
    @Column(name = "late_check_time")
    private Date lateCheckTime;

    /**
     * 标准下班时间
     */
    @Column(name = "off_duty_time")
    private Date offDutyTime;

    /**
     * 有效下班时间
     */
    @Column(name = "off_duty_check_time")
    private Date offDutyCheckTime;

    /**
     * 有效早退时间
     */
    @Column(name = "early_check_time")
    private Date earlyCheckTime;

    /**
     * 月度应出勤汇总
     */
    @Column(name = "should_attendance_hours")
    private Float shouldAttendanceHours;

    /**
     * 月度实际出勤汇总
     */
    @Column(name = "actual_attendance_hours")
    private Float actualAttendanceHours;

    /**
     * 特殊日期出勤汇总
     */
    @Column(name = "special_day_attendance_hours")
    private Float specialDayAttendanceHours;

    /**
     * 月度事假总计，单位为小时，精确至0.5
     */
    @Column(name = "casual_leave_hours")
    private Float casualLeaveHours;

    /**
     * 月度病假，单位为小时，精确至0.5
     */
    @Column(name = "medical_leave_hours")
    private Float medicalLeaveHours;

    /**
     * 月度年假，单位为小时，精确至0.5
     */
    @Column(name = "annual_leave_hours")
    private Float annualLeaveHours;

    /**
     * 月度产假，单位为小时，精确至0.5
     */
    @Column(name = "maternity_leave_hours")
    private Float maternityLeaveHours;

    /**
     * 月度婚假，单位为小时，精确至0.5
     */
    @Column(name = "marriage_leave_hours")
    private Float marriageLeaveHours;

    /**
     * 月度丧假，单位为小时，精确至0.5
     */
    @Column(name = "bereavement_leave_hours")
    private Float bereavementLeaveHours;

    /**
     * 月度调休，单位为小时，精确至0.5
     */
    @Column(name = "exchange_leave_hours")
    private Float exchangeLeaveHours;

    /**
     * 月度其它假汇总，单位为小时，精确至0.5
     */
    @Column(name = "others_leave_hours")
    private Float othersLeaveHours;

    /**
     * 月度平时加班汇总
     */
    @Column(name = "daily_overtime_hours")
    private Float dailyOvertimeHours;

    /**
     * 月度周末加班汇总
     */
    @Column(name = "weekend_overtime_hours")
    private Float weekendOvertimeHours;

    /**
     * 月度节假日加班汇总
     */
    @Column(name = "holiday_overtime_hours")
    private Float holidayOvertimeHours;

    /**
     * 月度迟到次数汇总
     */
    @Column(name = "late_count")
    private Integer lateCount;

    /**
     * 月度早退次数汇总
     */
    @Column(name = "leave_early_count")
    private Integer leaveEarlyCount;

    /**
     * 月度补卡次数汇总
     */
    @Column(name = "addition_clock_count")
    private Integer additionClockCount;

    /**
     * 月度旷工次数汇总
     */
    @Column(name = "neglect_work_count")
    private Integer neglectWorkCount;

    /**
     * 月度工时汇总
     */
    @Column(name = "total_count_hours")
    private Float totalCountHours;

    /**
     * 归档的月份，值示例: 2022-04
     */
    @Column(name = "file_month")
    private String fileMonth;

    /**
     * 备注信息，归档后才能添加备注
     */
    private String note;

    /**
     * A表示特殊打卡日，B表示特殊不打卡日，C表示工作日，D表示周末，E表示节假日
     */
    @Column(name = "day_type")
    private String dayType;

    /**
     * 考勤组ID
     */
    @Column(name = "group_id")
    private String groupId;

    /**
     * 获取表单ID
     *
     * @return id - 表单ID
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置表单ID
     *
     * @param id 表单ID
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取表单创建时间
     *
     * @return c_time - 表单创建时间
     */
    public Date getcTime() {
        return cTime;
    }

    /**
     * 设置表单创建时间
     *
     * @param cTime 表单创建时间
     */
    public void setcTime(Date cTime) {
        this.cTime = cTime;
    }

    /**
     * 获取表单修改时间
     *
     * @return m_time - 表单修改时间
     */
    public Date getmTime() {
        return mTime;
    }

    /**
     * 设置表单修改时间
     *
     * @param mTime 表单修改时间
     */
    public void setmTime(Date mTime) {
        this.mTime = mTime;
    }

    /**
     * 获取月度报表唯一标识符
     *
     * @return report_id - 月度报表唯一标识符
     */
    public String getReportId() {
        return reportId;
    }

    /**
     * 设置月度报表唯一标识符
     *
     * @param reportId 月度报表唯一标识符
     */
    public void setReportId(String reportId) {
        this.reportId = reportId;
    }

    /**
     * 获取员工在通讯录中的ID
     *
     * @return contact_id - 员工在通讯录中的ID
     */
    public String getContactId() {
        return contactId;
    }

    /**
     * 设置员工在通讯录中的ID
     *
     * @param contactId 员工在通讯录中的ID
     */
    public void setContactId(String contactId) {
        this.contactId = contactId;
    }

    /**
     * 获取标准上班时间
     *
     * @return on_duty_time - 标准上班时间
     */
    public Date getOnDutyTime() {
        return onDutyTime;
    }

    /**
     * 设置标准上班时间
     *
     * @param onDutyTime 标准上班时间
     */
    public void setOnDutyTime(Date onDutyTime) {
        this.onDutyTime = onDutyTime;
    }

    /**
     * 获取有效上班时间
     *
     * @return on_duty_check_time - 有效上班时间
     */
    public Date getOnDutyCheckTime() {
        return onDutyCheckTime;
    }

    /**
     * 设置有效上班时间
     *
     * @param onDutyCheckTime 有效上班时间
     */
    public void setOnDutyCheckTime(Date onDutyCheckTime) {
        this.onDutyCheckTime = onDutyCheckTime;
    }

    /**
     * 获取有效迟到时间
     *
     * @return late_check_time - 有效迟到时间
     */
    public Date getLateCheckTime() {
        return lateCheckTime;
    }

    /**
     * 设置有效迟到时间
     *
     * @param lateCheckTime 有效迟到时间
     */
    public void setLateCheckTime(Date lateCheckTime) {
        this.lateCheckTime = lateCheckTime;
    }

    /**
     * 获取标准下班时间
     *
     * @return off_duty_time - 标准下班时间
     */
    public Date getOffDutyTime() {
        return offDutyTime;
    }

    /**
     * 设置标准下班时间
     *
     * @param offDutyTime 标准下班时间
     */
    public void setOffDutyTime(Date offDutyTime) {
        this.offDutyTime = offDutyTime;
    }

    /**
     * 获取有效下班时间
     *
     * @return off_duty_check_time - 有效下班时间
     */
    public Date getOffDutyCheckTime() {
        return offDutyCheckTime;
    }

    /**
     * 设置有效下班时间
     *
     * @param offDutyCheckTime 有效下班时间
     */
    public void setOffDutyCheckTime(Date offDutyCheckTime) {
        this.offDutyCheckTime = offDutyCheckTime;
    }

    /**
     * 获取有效早退时间
     *
     * @return early_check_time - 有效早退时间
     */
    public Date getEarlyCheckTime() {
        return earlyCheckTime;
    }

    /**
     * 设置有效早退时间
     *
     * @param earlyCheckTime 有效早退时间
     */
    public void setEarlyCheckTime(Date earlyCheckTime) {
        this.earlyCheckTime = earlyCheckTime;
    }

    /**
     * 获取月度应出勤汇总
     *
     * @return should_attendance_hours - 月度应出勤汇总
     */
    public Float getShouldAttendanceHours() {
        return shouldAttendanceHours;
    }

    /**
     * 设置月度应出勤汇总
     *
     * @param shouldAttendanceHours 月度应出勤汇总
     */
    public void setShouldAttendanceHours(Float shouldAttendanceHours) {
        this.shouldAttendanceHours = shouldAttendanceHours;
    }

    /**
     * 获取月度实际出勤汇总
     *
     * @return actual_attendance_hours - 月度实际出勤汇总
     */
    public Float getActualAttendanceHours() {
        return actualAttendanceHours;
    }

    /**
     * 设置月度实际出勤汇总
     *
     * @param actualAttendanceHours 月度实际出勤汇总
     */
    public void setActualAttendanceHours(Float actualAttendanceHours) {
        this.actualAttendanceHours = actualAttendanceHours;
    }

    /**
     * 获取特殊日期出勤汇总
     *
     * @return special_day_attendance_hours - 特殊日期出勤汇总
     */
    public Float getSpecialDayAttendanceHours() {
        return specialDayAttendanceHours;
    }

    /**
     * 设置特殊日期出勤汇总
     *
     * @param specialDayAttendanceHours 特殊日期出勤汇总
     */
    public void setSpecialDayAttendanceHours(Float specialDayAttendanceHours) {
        this.specialDayAttendanceHours = specialDayAttendanceHours;
    }

    /**
     * 获取月度事假总计，单位为小时，精确至0.5
     *
     * @return casual_leave_hours - 月度事假总计，单位为小时，精确至0.5
     */
    public Float getCasualLeaveHours() {
        return casualLeaveHours;
    }

    /**
     * 设置月度事假总计，单位为小时，精确至0.5
     *
     * @param casualLeaveHours 月度事假总计，单位为小时，精确至0.5
     */
    public void setCasualLeaveHours(Float casualLeaveHours) {
        this.casualLeaveHours = casualLeaveHours;
    }

    /**
     * 获取月度病假，单位为小时，精确至0.5
     *
     * @return medical_leave_hours - 月度病假，单位为小时，精确至0.5
     */
    public Float getMedicalLeaveHours() {
        return medicalLeaveHours;
    }

    /**
     * 设置月度病假，单位为小时，精确至0.5
     *
     * @param medicalLeaveHours 月度病假，单位为小时，精确至0.5
     */
    public void setMedicalLeaveHours(Float medicalLeaveHours) {
        this.medicalLeaveHours = medicalLeaveHours;
    }

    /**
     * 获取月度年假，单位为小时，精确至0.5
     *
     * @return annual_leave_hours - 月度年假，单位为小时，精确至0.5
     */
    public Float getAnnualLeaveHours() {
        return annualLeaveHours;
    }

    /**
     * 设置月度年假，单位为小时，精确至0.5
     *
     * @param annualLeaveHours 月度年假，单位为小时，精确至0.5
     */
    public void setAnnualLeaveHours(Float annualLeaveHours) {
        this.annualLeaveHours = annualLeaveHours;
    }

    /**
     * 获取月度产假，单位为小时，精确至0.5
     *
     * @return maternity_leave_hours - 月度产假，单位为小时，精确至0.5
     */
    public Float getMaternityLeaveHours() {
        return maternityLeaveHours;
    }

    /**
     * 设置月度产假，单位为小时，精确至0.5
     *
     * @param maternityLeaveHours 月度产假，单位为小时，精确至0.5
     */
    public void setMaternityLeaveHours(Float maternityLeaveHours) {
        this.maternityLeaveHours = maternityLeaveHours;
    }

    /**
     * 获取月度婚假，单位为小时，精确至0.5
     *
     * @return marriage_leave_hours - 月度婚假，单位为小时，精确至0.5
     */
    public Float getMarriageLeaveHours() {
        return marriageLeaveHours;
    }

    /**
     * 设置月度婚假，单位为小时，精确至0.5
     *
     * @param marriageLeaveHours 月度婚假，单位为小时，精确至0.5
     */
    public void setMarriageLeaveHours(Float marriageLeaveHours) {
        this.marriageLeaveHours = marriageLeaveHours;
    }

    /**
     * 获取月度丧假，单位为小时，精确至0.5
     *
     * @return bereavement_leave_hours - 月度丧假，单位为小时，精确至0.5
     */
    public Float getBereavementLeaveHours() {
        return bereavementLeaveHours;
    }

    /**
     * 设置月度丧假，单位为小时，精确至0.5
     *
     * @param bereavementLeaveHours 月度丧假，单位为小时，精确至0.5
     */
    public void setBereavementLeaveHours(Float bereavementLeaveHours) {
        this.bereavementLeaveHours = bereavementLeaveHours;
    }

    /**
     * 获取月度调休，单位为小时，精确至0.5
     *
     * @return exchange_leave_hours - 月度调休，单位为小时，精确至0.5
     */
    public Float getExchangeLeaveHours() {
        return exchangeLeaveHours;
    }

    /**
     * 设置月度调休，单位为小时，精确至0.5
     *
     * @param exchangeLeaveHours 月度调休，单位为小时，精确至0.5
     */
    public void setExchangeLeaveHours(Float exchangeLeaveHours) {
        this.exchangeLeaveHours = exchangeLeaveHours;
    }

    /**
     * 获取月度其它假汇总，单位为小时，精确至0.5
     *
     * @return others_leave_hours - 月度其它假汇总，单位为小时，精确至0.5
     */
    public Float getOthersLeaveHours() {
        return othersLeaveHours;
    }

    /**
     * 设置月度其它假汇总，单位为小时，精确至0.5
     *
     * @param othersLeaveHours 月度其它假汇总，单位为小时，精确至0.5
     */
    public void setOthersLeaveHours(Float othersLeaveHours) {
        this.othersLeaveHours = othersLeaveHours;
    }

    /**
     * 获取月度平时加班汇总
     *
     * @return daily_overtime_hours - 月度平时加班汇总
     */
    public Float getDailyOvertimeHours() {
        return dailyOvertimeHours;
    }

    /**
     * 设置月度平时加班汇总
     *
     * @param dailyOvertimeHours 月度平时加班汇总
     */
    public void setDailyOvertimeHours(Float dailyOvertimeHours) {
        this.dailyOvertimeHours = dailyOvertimeHours;
    }

    /**
     * 获取月度周末加班汇总
     *
     * @return weekend_overtime_hours - 月度周末加班汇总
     */
    public Float getWeekendOvertimeHours() {
        return weekendOvertimeHours;
    }

    /**
     * 设置月度周末加班汇总
     *
     * @param weekendOvertimeHours 月度周末加班汇总
     */
    public void setWeekendOvertimeHours(Float weekendOvertimeHours) {
        this.weekendOvertimeHours = weekendOvertimeHours;
    }

    /**
     * 获取月度节假日加班汇总
     *
     * @return holiday_overtime_hours - 月度节假日加班汇总
     */
    public Float getHolidayOvertimeHours() {
        return holidayOvertimeHours;
    }

    /**
     * 设置月度节假日加班汇总
     *
     * @param holidayOvertimeHours 月度节假日加班汇总
     */
    public void setHolidayOvertimeHours(Float holidayOvertimeHours) {
        this.holidayOvertimeHours = holidayOvertimeHours;
    }

    /**
     * 获取月度迟到次数汇总
     *
     * @return late_count - 月度迟到次数汇总
     */
    public Integer getLateCount() {
        return lateCount;
    }

    /**
     * 设置月度迟到次数汇总
     *
     * @param lateCount 月度迟到次数汇总
     */
    public void setLateCount(Integer lateCount) {
        this.lateCount = lateCount;
    }

    /**
     * 获取月度早退次数汇总
     *
     * @return leave_early_count - 月度早退次数汇总
     */
    public Integer getLeaveEarlyCount() {
        return leaveEarlyCount;
    }

    /**
     * 设置月度早退次数汇总
     *
     * @param leaveEarlyCount 月度早退次数汇总
     */
    public void setLeaveEarlyCount(Integer leaveEarlyCount) {
        this.leaveEarlyCount = leaveEarlyCount;
    }

    /**
     * 获取月度补卡次数汇总
     *
     * @return addition_clock_count - 月度补卡次数汇总
     */
    public Integer getAdditionClockCount() {
        return additionClockCount;
    }

    /**
     * 设置月度补卡次数汇总
     *
     * @param additionClockCount 月度补卡次数汇总
     */
    public void setAdditionClockCount(Integer additionClockCount) {
        this.additionClockCount = additionClockCount;
    }

    /**
     * 获取月度旷工次数汇总
     *
     * @return neglect_work_count - 月度旷工次数汇总
     */
    public Integer getNeglectWorkCount() {
        return neglectWorkCount;
    }

    /**
     * 设置月度旷工次数汇总
     *
     * @param neglectWorkCount 月度旷工次数汇总
     */
    public void setNeglectWorkCount(Integer neglectWorkCount) {
        this.neglectWorkCount = neglectWorkCount;
    }

    /**
     * 获取月度工时汇总
     *
     * @return total_count_hours - 月度工时汇总
     */
    public Float getTotalCountHours() {
        return totalCountHours;
    }

    /**
     * 设置月度工时汇总
     *
     * @param totalCountHours 月度工时汇总
     */
    public void setTotalCountHours(Float totalCountHours) {
        this.totalCountHours = totalCountHours;
    }

    /**
     * 获取归档的月份，值示例: 2022-04
     *
     * @return file_month - 归档的月份，值示例: 2022-04
     */
    public String getFileMonth() {
        return fileMonth;
    }

    /**
     * 设置归档的月份，值示例: 2022-04
     *
     * @param fileMonth 归档的月份，值示例: 2022-04
     */
    public void setFileMonth(String fileMonth) {
        this.fileMonth = fileMonth;
    }

    /**
     * 获取备注信息，归档后才能添加备注
     *
     * @return note - 备注信息，归档后才能添加备注
     */
    public String getNote() {
        return note;
    }

    /**
     * 设置备注信息，归档后才能添加备注
     *
     * @param note 备注信息，归档后才能添加备注
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * 获取A表示特殊打卡日，B表示特殊不打卡日，C表示工作日，D表示周末，E表示节假日
     *
     * @return day_type - A表示特殊打卡日，B表示特殊不打卡日，C表示工作日，D表示周末，E表示节假日
     */
    public String getDayType() {
        return dayType;
    }

    /**
     * 设置A表示特殊打卡日，B表示特殊不打卡日，C表示工作日，D表示周末，E表示节假日
     *
     * @param dayType A表示特殊打卡日，B表示特殊不打卡日，C表示工作日，D表示周末，E表示节假日
     */
    public void setDayType(String dayType) {
        this.dayType = dayType;
    }

    /**
     * 获取考勤组ID
     *
     * @return group_id - 考勤组ID
     */
    public String getGroupId() {
        return groupId;
    }

    /**
     * 设置考勤组ID
     *
     * @param groupId 考勤组ID
     */
    public void setGroupId(String groupId) {
        this.groupId = groupId;
    }
}